Goal

Retrieve the discretization attributes available in PredicSis.ai GUI using the Python SDK

Prerequisites

  • PredicSis.ai Python SDK (pip install predicsis; documentation)
  • A predictive model available on your PredicSis.ai instance

In [ ]:
# Load PredicSis.ai SDK
from predicsis import PredicSis

import predicsis.config as config, os, sys
os.environ['PREDICSIS_URL'] = 'your_instance'
if sys.version_info[0] >= 3:
    from importlib import reload
reload(config)

Retrieve the predictive model


In [2]:
pj = PredicSis.project('Outbound Mail Campaign')
model = pj.schema('Outbound Mail Campaign 2017-03-17 15:02:22')

Retrieve and describe the central frame


In [3]:
central = model.central()
central.describe()


Out[3]:
NameTypeUsedModifiedLevelWeight
KEYcategorical
LABELcategorical
agecontinuous0.010.77
average_basketcontinuous0.010.82
customer_profilecategorical0.010.80
emailcategorical
first_namecategorical
flag_hificategorical
flag_jewelscategorical0.000.81
flag_shoescategorical0.010.82
flag_topcategorical0.020.82
flag_underwearcategorical0.000.76
last_namecategorical
nb_purchasecontinuous
region_codecontinuous

Retrieve discretization attributes


In [4]:
central.discretization_attributes('age')


Out[4]:
[{u'coverage': 0.500264,
  u'expression': u']-inf;29.5]',
  u'frequency': 64382,
  u'infinite_maximum': False,
  u'infinite_minimum': True,
  u'maximum': 29.5,
  u'minimum': None,
  u'missing': False,
  u'target_distribution': {u'0': 0.998338, u'1': 0.00166196}},
 {u'coverage': 0.199649,
  u'expression': u']29.5;34.5]',
  u'frequency': 25694,
  u'infinite_maximum': False,
  u'infinite_minimum': False,
  u'maximum': 34.5,
  u'minimum': 29.5,
  u'missing': False,
  u'target_distribution': {u'0': 0.995057, u'1': 0.00494279}},
 {u'coverage': 0.300087,
  u'expression': u']34.5;+inf[',
  u'frequency': 38620,
  u'infinite_maximum': True,
  u'infinite_minimum': False,
  u'maximum': None,
  u'minimum': 34.5,
  u'missing': False,
  u'target_distribution': {u'0': 0.999171, u'1': 0.000828586}}]

Discretization attributes are only available on contributive feature.

If you try to retrieve discretization attributes on non contributive feature, then you raise an AssertionError:


In [5]:
central.level('last_name')


Out[5]:
0.0

In [7]:
central.discretization_attributes('last_name')


---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-7-18c1847b8f2d> in <module>()
----> 1 central.discretization_attributes('last_name')

/Users/marcadias/anaconda2/lib/python2.7/site-packages/predicsis/schema/frame.pyc in _inner(self, *args, **kwargs)
    109             raise NotImplementedError(
    110                 'This method only exists on central frame')
--> 111         return func(self, *args, **kwargs)
    112     _inner.__doc__ = func.__doc__
    113     _inner.__name__ = func.__name__

/Users/marcadias/anaconda2/lib/python2.7/site-packages/predicsis/schema/frame.pyc in discretization_attributes(self, feat)
    510                 return feat._usr['intervals_attributes']
    511         raise AssertionError('The feature `%s` is not contributive' %
--> 512                              self.name())
    513 
    514     @central

AssertionError: The feature `Master` is not contributive

Same for Categorical features


In [8]:
central.discretization_attributes('customer_profile')


Out[8]:
[{u'coverage': 0.538401,
  u'frequency': 69290,
  u'target_distribution': {u'0': 0.99707, u'1': 0.00292972},
  u'value_list': [u'Active customer', u'Inactive customer']},
 {u'coverage': 0.461599,
  u'frequency': 59406,
  u'target_distribution': {u'0': 0.99894, u'1': 0.0010605},
  u'value_list': [u'Lost customer',
   u'Active prospect',
   u'Inactive prospect',
   u' * ']}]

In [ ]: